#include <iostream>
#include <iomanip>
#include <vector>
#include <cstdlib>
#include <ctime>

#define PV_FLAG    5566
#define ALPHA_FLAG 7788
#define BETA_FLAG  9900
#define valUNKNOWN 94502012
#define TABLE_SIZE 33554432
//#define TABLE_SIZE 1024
using namespace std;


struct HashNode
{
    
	int key;
	int depth;
	int hashf;
	int val;
};

unsigned long Zobrist[33][32];
HashNode Hash_Table[TABLE_SIZE];
unsigned long ZobristKey;
//int n = 100;
void initZobrist()
{
     for(int i=0;i<TABLE_SIZE;i++)
     {
            
            Hash_Table[i].key=0;
            Hash_Table[i].depth=0;
            Hash_Table[i].hashf=0;
            Hash_Table[i].val=0;
            }
     srand((unsigned int)time(0));
     for(int i=0;i<33;i++)
     { 
         for(int j=0;j<32;j++)
         {
             unsigned long a=rand();
             while(a<5314855)
                a*=rand();
             Zobrist[i][j] = a;
            // cout << Zobrist[i][j] << endl;
         }
     }
     
}

/*
class Table
{
public:
	Table();
	~Table();
	unsigned int Zobrist[34][32];
    void initZobrist()
	{		//fill Zobrist using rand
	
	}
	void AddToTable(); //adds a new item to the table
    void TableDelete(int searchKey); //deletes an item from the table
    int Size; //number of items in the table
    int GetSize()
    {
        return Size;
    }

protected:
    int GetIndex (int searchKey); //determines which table index to work with
 
};
*/
